package com.xbai.spark.core.transform

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
  * sortByKey([ascending], [numTasks]) 算子
  * 作用：在一个 (K,V) 的 RDD 上调用，K 必须实现 Ordered 接口，返回一个按照 key 进行排序的(K,V) 的 RDD
  * 案例：创建一个 pairRDD，按照 key 的正序和倒序进行排序
  *
  * @author xbai
  * @Date 2020/12/31
  */
object Spark21_SortByKey {

  def main(args: Array[String]): Unit = {
    val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("sortByKey")
    val sc = new SparkContext(conf)

    val rdd: RDD[(Int, String)] = sc.parallelize(Array((3,"aa"),(6,"cc"),(2,"bb"),(1,"dd")))
    val ascRDD: RDD[(Int, String)] = rdd.sortByKey {
      true
    }
    ascRDD.collect().foreach(println)
    val descRDD: RDD[(Int, String)] = rdd.sortByKey {
      false
    }
    descRDD.collect().foreach(println)
  }
}
